package com.markus.code.exam.meituan;

import sun.util.resources.cldr.zh.CalendarData_zh_Hans_HK;

import java.util.HashMap;
import java.util.Scanner;

/**
 * Author:markusZhang
 * Date:Create in 2020/9/13 11:59
 * todo:
 */
public class Main3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int sum = scanner.nextInt();
            int max = scanner.nextInt();
            int needMax = scanner.nextInt();
            int res = 0;
            Main3 demo = new Main3();
            for (int i = 1; i <= max; i++) {
                memo = new HashMap<>();
                if (i >= needMax) {
                    res += dfs(sum, max, true, i, needMax) % 998244353;
                } else {
                    res += dfs(sum, max, false, i, needMax) % 998244353;
                }
            }
            System.out.println(res);
        }
    }
    private static HashMap<Integer, Integer> memo;
    public static int dfs(int sum, int max, boolean isHasNeedMax, int nowSum, int needMax) {
        if (nowSum > sum) {
            return 0;
        }
        if (nowSum == sum && (!isHasNeedMax)) {
            return 0;
        }
        if (nowSum == sum) {
            return 1;
        }
        if (memo.containsKey(sum)){
            return memo.get(sum);
        }
        int res = 0;
        for (int i = 1; i <= max; i++) {
            if (i >= needMax) {
                isHasNeedMax = true;
            }
            res += dfs(sum, max, isHasNeedMax, nowSum + i, needMax);
        }
        memo.put(sum, res);
        return res;
    }
}
